/**
 * API模拟数据工具
 * 在本地开发环境中，当后端服务不可用时提供模拟数据
 */

// 是否启用模拟数据
const ENABLE_MOCK = true;

// 模拟数据映射表
const mockDataMap = {
  // 轮播图数据
  '/api/miniapp/banners': {
    code: 0,
    message: '获取成功',
    data: [
      {
        id: 1,
        title: '新品上市',
        image: 'https://img.example.com/banner1.jpg',
        link: '/pages/product/detail?id=1001',
        sort: 1,
        status: 1
      },
      {
        id: 2,
        title: '限时促销',
        image: 'https://img.example.com/banner2.jpg',
        link: '/pages/product/detail?id=1002',
        sort: 2,
        status: 1
      },
      {
        id: 3,
        title: '热卖商品',
        image: 'https://img.example.com/banner3.jpg',
        link: '/pages/product/detail?id=1003',
        sort: 3,
        status: 1
      }
    ]
  },
  
  // 推荐商品
  '/api/miniapp/products/recommend': {
    code: 0,
    message: '获取成功',
    data: [
      {
        id: 1001,
        name: '高端智能手机',
        price: 4999.00,
        originalPrice: 5999.00,
        cover: 'https://img.example.com/product1.jpg',
        sales: 2658,
        stock: 1000
      },
      {
        id: 1002,
        name: '无线蓝牙耳机',
        price: 799.00,
        originalPrice: 999.00,
        cover: 'https://img.example.com/product2.jpg',
        sales: 4253,
        stock: 500
      },
      {
        id: 1003,
        name: '智能手表',
        price: 1299.00,
        originalPrice: 1499.00,
        cover: 'https://img.example.com/product3.jpg',
        sales: 1856,
        stock: 300
      }
    ]
  },
  
  // 用户登录
  '/api/miniapp/auth/wx-login': {
    code: 0,
    message: '登录成功',
    data: {
      token: 'mock_token_12345678',
      refreshToken: 'mock_refresh_token_12345678',
      userId: 10001,
      expireTime: Date.now() + 7 * 24 * 60 * 60 * 1000 // 7天有效期
    }
  }
};

/**
 * 检查请求是否命中模拟数据
 * @param {string} url - 请求URL
 * @returns {boolean} - 是否命中
 */
export function isMockUrl(url) {
  if (!ENABLE_MOCK) return false;
  
  // 提取API路径
  const apiPath = url.split('?')[0];
  
  return Object.keys(mockDataMap).some(key => {
    return apiPath.endsWith(key);
  });
}

/**
 * 获取模拟数据
 * @param {string} url - 请求URL
 * @returns {Object} - 模拟数据
 */
export function getMockData(url) {
  if (!ENABLE_MOCK) return null;
  
  // 提取API路径
  const apiPath = url.split('?')[0];
  
  // 查找匹配的模拟数据
  const matchKey = Object.keys(mockDataMap).find(key => {
    return apiPath.endsWith(key);
  });
  
  if (matchKey) {
    // 返回深拷贝避免修改原始模拟数据
    return JSON.parse(JSON.stringify(mockDataMap[matchKey]));
  }
  
  // 未找到匹配的模拟数据，返回默认错误响应
  return {
    code: 404,
    message: '接口不存在',
    data: null
  };
}

export default {
  isMockUrl,
  getMockData,
  ENABLE_MOCK
}; 